The present invention relates generally to industrial controllers for controlling industrial processes or machinery, and in particular to a shared memory architecture for a processor used for such an industrial controller
Industrial controllers are special purpose computers used for controlling factory automation and the like. Under the direction of stored programs, a processor of the industrial controller examines a series of inputs reflecting the status of a controlled process and changes outputs affecting control of the controlled process. The stored control programs may be continuously executed in a series of execution cycles, repeated periodically, or executed based on events.
Industrial controllers differ from standard computers in several important ways. First, the control program executed by the industrial controller is normally highly customized to a particular control application. For this reason, special control languages, such as “relay ladder logic” are normally used to facilitate programming of the device.
Second, industrial controllers may adopt a modular architecture allowing components, such as I/O modules, to be freely added or removed. Further, predictable high-speed execution of the instructions must be ensured for reliable real-time control and, unlike standard computers which may tolerate occasional crashes and restarts, industrial controllers must be designed for maximum availability commensurate with the high costs of stopping and starting industrial processes such as assembly lines. For these reasons, industrial controllers often use a proprietary operating system dedicated to industrial control and may use special-purpose processors.
Increasingly, industrial controllers are being called upon to perform tasks normally associated with standard computers including, for example, network communications using Ethernet, DeviceNet or similar standard data transmission protocols. In order to take advantage of the rapid advances in network communications associated with standard computers, designers have constructed industrial controllers that work closely with standard processors communicating over high-speed dedicated network links. In these cases, for example, communication applications may be executed by the standard processor using commercially available packages and the data communicated to the industrial controller over a network or backplane.
Such dual-computer systems can substantially increase the complexity of programming the system and make it difficult to provide a reliable and available industrial control. In particular, the industrial controller can now be disabled by a fault condition in either processor. Automatic initialization and restarting of the system under such fault conditions is complex and may require that the system the taken off-line for a period of time. Communication between the two computers, even on high-speed networks, can form a barrier to complete flexibility in allocations of processing tasks between the two machines.